// pages/merchant/dashboard/index.js
const apiService = require('../../../utils/api.js');

Page({
  data: {
    merchantInfo: {
      account: ''
    },
    todayStats: {
      orders: 0,
      revenue: '¥0.00',
      devices: 0,
      customers: 0
    },
    // 门店选择器相关
    isSuperAdmin: false,
    storeList: [],
    selectedStoreIndex: 0,
    selectedStoreId: '',
    selectedStoreName: '全部门店'
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    console.log('商家端首页加载', options);
    this.initMerchantInfo();
    this.loadTodayStats();
    this.initStoreSelector();
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    // 每次显示页面时刷新数据
    this.loadTodayStats();
  },

  /**
   * 初始化商家信息
   */
  initMerchantInfo() {
    const merchantLoginInfo = wx.getStorageSync('merchantLoginInfo');
    if (merchantLoginInfo && merchantLoginInfo.isMerchantLogin) {
      this.setData({
        'merchantInfo.account': merchantLoginInfo.account
      });
    } else {
      // 如果没有登录信息，返回登录页
      wx.redirectTo({
        url: '/pages/merchant/login/index'
      });
    }
  },

  /**
   * 加载今日数据
   */
  async loadTodayStats() {
    try {
      // 模拟加载数据
      // 实际项目中应该调用后端API
      const stats = await this.mockLoadStats();
      
      this.setData({
        todayStats: stats
      });
    } catch (error) {
      console.error('加载今日数据失败:', error);
    }
  },

  /**
   * 初始化门店选择器
   */
  async initStoreSelector() {
    try {
      // 判断是否为超级管理员
      const userId = wx.getStorageSync('userId');
      
      // 获取门店列表 - 使用管理员接口获取所有门店
      const result = await apiService.callFunction('admin', 'store/list', {});
      
      if (result.code === 200 && result.data && result.data.list && result.data.list.length > 0) {
        const storeList = result.data.list;
        
        this.setData({
          storeList: storeList,
          isSuperAdmin: true // 暂时所有商家端用户都可见
        });
        
        // 获取缓存的选中门店
        const cachedStoreId = wx.getStorageSync('selectedStoreId');
        if (cachedStoreId) {
          const index = storeList.findIndex(store => store._id === cachedStoreId);
          if (index !== -1) {
            this.setData({
              selectedStoreIndex: index,
              selectedStoreId: cachedStoreId,
              selectedStoreName: storeList[index].name
            });
          }
        }
      }
    } catch (error) {
      console.error('初始化门店选择器失败:', error);
    }
  },

  /**
   * 门店选择变化
   */
  onStoreChange(e) {
    const index = parseInt(e.detail.value);
    const store = this.data.storeList[index];
    
    if (store) {
      this.setData({
        selectedStoreIndex: index,
        selectedStoreId: store._id,
        selectedStoreName: store.name
      });
      
      // 保存到本地缓存
      wx.setStorageSync('selectedStoreId', store._id);
      
      wx.showToast({
        title: `已切换到：${store.name}`,
        icon: 'success',
        duration: 2000
      });
    }
  },

  /**
   * 模拟加载统计数据
   */
  async mockLoadStats() {
    // 模拟网络请求延迟
    await new Promise(resolve => setTimeout(resolve, 500));

    // 模拟返回数据
    return {
      orders: 15,
      revenue: '¥1,250.00',
      devices: 8,
      customers: 23
    };
  },

  /**
   * 页面跳转
   */
  navigateTo(e) {
    const url = e.currentTarget.dataset.url;
    if (!url) return;

    wx.navigateTo({
      url: url,
      success: () => {
        console.log('跳转成功:', url);
      },
      fail: (error) => {
        console.error('跳转失败:', error);
        wx.showToast({
          title: '页面跳转失败',
          icon: 'none'
        });
      }
    });
  },

  /**
   * 退出登录
   */
  onLogout() {
    wx.showModal({
      title: '确认退出',
      content: '确定要退出商家端吗？',
      success: (res) => {
        if (res.confirm) {
          // 清除登录信息
          wx.removeStorageSync('merchantLoginInfo');
          
          wx.showToast({
            title: '已退出',
            icon: 'success'
          });

          // 返回登录页
          setTimeout(() => {
            wx.redirectTo({
              url: '/pages/merchant/login/index'
            });
          }, 1500);
        }
      }
    });
  },

  /**
   * 返回用户端
   */
  backToUser() {
    wx.showModal({
      title: '返回用户端',
      content: '确定要返回用户端吗？',
      success: (res) => {
        if (res.confirm) {
          // 跳转到用户端首页
          wx.switchTab({
            url: '/pages/home/index/index',
            success: () => {
              console.log('返回用户端成功');
            },
            fail: (error) => {
              console.error('返回用户端失败:', error);
              wx.showToast({
                title: '返回失败',
                icon: 'none'
              });
            }
          });
        }
      }
    });
  }
});
